package com.mt.mall.service.good;

import com.mt.common.core.web.base.PageDTO;
import com.mt.common.core.web.base.PageResultDTO;
import com.mt.mall.entity.good.Commodity;

import java.util.List;

public interface CommodityService {
    /**
     * 根据分页参数查询商品集合
     *
     * @param pageDTO 分页条件
     */
    public PageResultDTO findCommoditys(PageDTO pageDTO);

    /**
     * 查询全部商品集合
     *
     */
    public List<Commodity> findAllCommoditys();

    /**
     * 根据名称查询商品集合(只提取ID 和 Name)
     *
     * @param commodityName 名称
     */
    public List<Commodity> findCommoditysWithIdNameByName(String commodityName);

    /**
     * 查询所有商品集合(只提取ID 和 Name)
     *
     */
    public List<Commodity> findAllCommoditysWithIdName();

    /**
     * 根据ID查询指定的商品(只提取ID 和 Name)
     *
     * @param commodityId Id
     */
    public Commodity findCommoditysWithIdNameById(Long commodityId);

    /**
     * 根据ID查询指定的商品
     *
     * @param commodityId Id
     */
    public Commodity findCommodity(Long commodityId);

    /**
     * 根据ID查询指定的商品(包含外键)
     *
     * @param commodityId Id
     */
    public Commodity findCommodityWithForeignName(Long commodityId);

    /**
     * 新增商品
     *
     * @param commodity 实体对象
     */
    public Commodity saveCommodity(Commodity commodity);

    /**
     * 更新商品
     *
     * @param commodity 实体对象
     */
    public Commodity updateCommodity(Commodity commodity);

    /**
     * 根据ID删除商品
     *
     * @param commodityId ID
     */
    public void deleteCommodity(Long commodityId);

    public boolean synchronousAllData();
    //ES中查找
    PageResultDTO findCommoditysInES(PageDTO pageDTO);

    void updateCommoditySaleNum(Long commodityId,int count);

    List<Commodity> findHotCommodity();
}
